fix(scripts): drop both transcribed counts from check-regen-pending's battery-roster comment - #16731
Merged
Merged
Conversation
…mment The roster block's STOP paragraph named the three callees' inner sinks by shape and hung two transcribed numbers off two of them: `fixtureSelfTest`'s "`check()` helper (14 calls)" and `decisionTableSelfTest`'s "literal 8-row table". Neither is derived or compared by anything, and the first had drifted to 28 while the second was still exactly 8 — so the one block whose subject is which numbers in this file are load-bearing gave a reader no way to tell which of its own two numbers to trust. Both counts come out. The sentence's job is the contrast between three different SHAPES — a helper, a literal table with its driving loop, a bare boolean — and the counts were never carrying that; removing them also makes the three list items parallel, which they were not while two of them were sized and one was not. Comment-only. Stripping every full-line `//` from the file before and after this change yields byte-identical text, and `--self-test` prints a byte-identical transcript, so no gate's accept/reject behaviour moves. The floor is untouched and is deliberately not an assertion count: `SELF_TEST_BATTERIES` floors each callee at 1 registration. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012GKcPZbMoGq7WPzKLfRBTU
baozhoutao
marked this pull request as ready for review
September 8, 2026 02:42
baozhoutao
enabled auto-merge
September 8, 2026 02:42
baozhoutao
deleted the
claude/issue-16007-regen-pending-roster-counts
branch
September 8, 2026 03:08
This was referenced Sep 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #16007
What changed
One comment paragraph in
scripts/check-regen-pending.mjs, inside theSELF_TEST_BATTERIESgovernance block. Both transcribed counts leave the same sentence:`fixtureSelfTest`'s `check()` helper (14 calls)`fixtureSelfTest`'s `check()` helper`decisionTableSelfTest`'s literal 8-row table`decisionTableSelfTest`'s literal tableRoute: option 1 — delete BOTH counts, not only the wrong one, per the ratified triage on the card. Deliberately not the derived shape that landed on sibling #15231 (PR #16669): the two cards are the same defect class with opposite ratified remedies — derive there, delete here.
9 comment lines replaced by 9 comment lines (the paragraph is re-wrapped at the file's existing 80-column comment width). File length unchanged: 1408 lines before and after.
Why the sentence still says what it meant
The paragraph's own stated job is the contrast between three different shapes — "they are worth naming because all three are different shapes". A helper, a literal table with its driving loop, a bare boolean: those are the three shapes, and each is named by kind. Neither count was carrying that argument, and nothing downstream in the paragraph reads either number — the later clauses say "the table", "those rows", "one callee's internals", all of which resolve without a size.
Removing them also makes the three list items parallel for the first time. Before this change one item was sized in calls, one in rows, and one not at all, in the one block whose subject is which numbers in this file are load-bearing and which are not.
The floor is untouched and is not what drifted:
SELF_TEST_BATTERIESfloors each callee at 1 registration, deliberately not at an assertion count, andSELF_TEST_BATTERY_FLOORis 3. Nothing here pins a total.Measurements re-taken on
origin/mainatbe92d468The card cites
:720; a later reading cited:840. Both were re-measured rather than trusted, and the block was found by its text, not by a line number.be92d468:720:840(theSTOP --line that opens the paragraph is:838)check(call sites infixtureSelfTestdecisionTableSelfTest's literal tableThe row count was the unsettled one, and it is settled here with a validated instrument. A crude
grep -c "^\s*\["over anawkrange returns 11 on this file, and 11 is an artifact, not a reading: theawkrange runs past the callee and swallows the three rows of thecalleesliteral in the dispatch block below it, 8 + 3 = 11. All eleven counted lines were listed and classified.The instrument used instead parses the file and counts the elements of the
casesarray literal inside thedecisionTableSelfTestfunction declaration. It was validated before it was trusted: on a purpose-built input whose correct answer is 6 by construction (containing a comment line inside the literal, one row spanning three lines, and two rows sharing a line), it returns 6 while the crude grep returns 5. Negative control: asked for a function name that does not exist, it exits 2 withFAIL, rather than returning a number.Verification
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, run individually with exit codes recorded to disk, then reconciled:34 derived, 34 run, 0 NOT-MEASURED, 0 UNRUN. Every one exits 0. The list was re-derived after the final commit and is byte-identical to the pre-commit derivation.check:browser-reachable-entries,check:docs,check:generated, all@objectstack/spec) first exited 1 with their own PREREQUISITE-NOT-MET text —packages/spec/dist holds no .mjs/.js bundlesandpackages/spec/json-schema is missing. That is an unbuilt checkout, not a verdict on this diff. Afterpnpm --filter @objectstack/spec buildall three exit 0.eslint . --no-inline-config --format jsoncompleted over a population of 6338 files that eslint itself resolved under its config — 0 errors, 0 warnings, and the changed file is present in that population.//comment from the file before and after this change yields byte-identical text (diffexit 0). Andnode scripts/check-regen-pending.mjs --self-testexits 0 with a transcript byte-identical to the same self-test run from the pre-change bytes (diffexit 0).grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]'over the changed file exits 1 — none. Exit code captured before any pipe.8-row,14 callsand the sentence's own phrases finds no other reference to either count and nothing that pins this comment's wording.No changeset — measured, not assumed
Nothing published moves. The only changed path lives under the repo-root package, which is
private: trueand declares nofiles[]; of the 70 non-private packages that declare afiles[], zero are rooted at the repo root, so no published artifact can containscripts/check-regen-pending.mjs.skip-changesetapplies.验收备注
No out-of-scope findings. The card's stale
:720and the earlier:840are recorded above as re-measurements rather than filed: they are drift in the card's own citations, not defects in the tree.Generated by Claude Code